import axios from "axios";
import querystring from "querystring";
import {
  Message
} from "element-ui";
import {removeToken} from '../utils/auth';
axios.defaults.headers.post["Content-Type"] =
  "application/x-www-form-urlencoded";

// create an axios instance
const service = axios.create({
  // baseURL: hostAddress, // api的base_url
  baseURL: hostAddress, // api的base_url
  // headers:{  
  // headers:{
  //     'Content-Type':'application/x-www-form-urlencoded',
  // },
  transformRequest: [
    function (data) {
      if (data) {
        data = querystring.stringify(data);
      }
      return data;
    }
  ],
  // withCredentials:true,
  timeout: 5000 // request timeout
});

service.interceptors.request.use(
  config => {
    // Do something before request is sent
    // if (store.getters.token) {
    //     config.headers['X-Token'] = store.getters.token // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
    // }
    return config;
  },
  error => {
    // Do something with request error
    console.log(error); // for debug
    return Promise.reject(error);
  }
);

// respone interceptor
service.interceptors.response.use(
  response => {
    /**
     * 下面的注释为通过response自定义code来标示请求状态，当code返回如下情况为权限有问题，登出并返回到登录页
     * 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中
     */
    const res = response.data;
    if (res.errcode !== 0) {
      if(res.code == 202){
        removeToken();
        location.hash="/login"
        return;
      }
    
      if (res.errcode == 1) {
        Message({
          message: res.msg,
          type: "error",
          duration: 5 * 1000
        });
        return Promise.reject(res.msg);
      }
      // 50008:非法的token; 50012:其他客户端登录了;  50014:Token 过期了;
      //   if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
      //     MessageBox.confirm(
      //       "你已被登出，可以取消继续留在该页面，或者重新登录",
      //       "确定登出",
      //       {
      //         confirmButtonText: "重新登录",
      //         cancelButtonText: "取消",
      //         type: "warning"
      //       }
      //     ).then(() => {
      //       store.dispatch("FedLogOut").then(() => {
      //         location.reload(); // 为了重新实例化vue-router对象 避免bug
      //       });
      //     });
      //   }
      return Promise.reject(res);
    } else {
      return res.info;
    }
  },
  error => {
    console.log("err" + error); // for debug
    // return;
    Message({
      message: error.message,
      title: "提示"
    });
    return Promise.reject(error);
  }
);

export default service;
